package com.xhsj.user.pms.workflow.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xhsj.user.pms.patent.domain.Disclosure;
import com.xhsj.user.pms.patent.domain.ExamineModel;
import com.xhsj.user.pms.patent.domain.TransferModel;
import com.xhsj.user.pms.workflow.domain.WorkflowIdentitylink;
import com.xhsj.user.pms.workflow.dto.ExecProgressDto;
import com.xhsj.user.pms.workflow.model.RuningTaskModel;
import com.xhsj.user.pms.workflow.model.WorkFlowScheduleModel;
import com.xhsj.user.utils.Message;

import java.util.List;
import java.util.Map;

/**
 * @Description:
 * @Auther: 苏小林
 * @Date: 2020/1/16 15:35
 */
public interface WorkflowExecService {


    //    进度查询
    IPage<WorkFlowScheduleModel> getWorkFlowSchedule(String disclosureId,int pageNum, int pageSize);
    //   主管审核保存
    void managerWorkFlowProgress(ExecProgressDto param) throws Exception;

    void execProgress2(ExecProgressDto param) throws Exception;

    void execProgress3(ExecProgressDto param) throws Exception;
    /**
     * 递交申请文件
     * @author 苏小林
     * @date 2021/1/13 14:11
     * @param: param
     * @return: com.xhsj.user.utils.Message
     */
    void submitApplicationFile(ExecProgressDto param) throws Exception;
   //    通知提交页
    void noticeCommitWorkFlowProgress(Map<String, Object> param) throws Exception;

    boolean updateDisclosure(Map<String, Object> param) throws Exception;
    //流程节点列表
    List<Map<String, Object>> getWorkFlowNodeList(String disclosureId);
    //保存反馈意见
    Message saveJudgesReviewRecord(Map<String, Object> param);
    //获取当前交底书所在的流程
     Long getWorkFlowExec(String disclosureId);
    //专利代办数
    Integer patentAgencyNum(int userId);

    //保存消息
    void returnMessagesUtils(ExecProgressDto param);

    //审核转入列表
    IPage<TransferModel> findPatentAuditTransferList(Map<String, Object> param);

    //转出列表
    IPage<TransferModel> findPatentAuditTransferOutList(Map<String, Object> param);

    /**
     * IPR查新沟通
     * @author 苏小林
     * @date 2021/1/11 13:39
     * @param: param
     */
    void iprCommunicate(ExecProgressDto param) throws Exception;

    /**
     * 评审会初审
     * @author 苏小林
     * @date 2021/1/12 10:39
     * @param: param
     */
    void firstTrialPass(ExecProgressDto param) throws Exception;

    /**
     * IPR编写
     * @author 苏小林
     * @date 2021/1/12 15:29
     * @param: param
     */
    void iprEditFile(ExecProgressDto param) throws Exception;

    /**
     * IPR编写完整申请文件
     * @author 苏小林
     * @date 2021/1/13 10:21
     * @param: param
     */
    void iprEditCompleteFile(ExecProgressDto param) throws Exception;

    IPage<ExamineModel> findPatentAuditList(Map<String, Object> param);

    void creatorReplyIpr(ExecProgressDto param) throws Exception;

    void updateDBdata() throws Exception;

    void updateDBdata1();

    void updateDBdata2() throws Exception;

    // 修改节点为评审会初审终审，评审会初审终审确认的指派人
    void updateIdentityAndHi(Long patentUserId,List<List<Long>> users,List<RuningTaskModel> runingTask, List<Long> inventorProposalIprs) throws Exception;

    // 流程当前节点
    Integer getCurrentNodeNum(String disclosureId);

    void updateArchivesNum(Map<String, Object> param) throws Exception;

//    IPR互审
    void iprMutualAudit(ExecProgressDto param) throws Exception;

    void iprReMutualAudit(ExecProgressDto param,Integer type) throws Exception;

    void firstTrialRe(ExecProgressDto param) throws Exception ;
}
